import request from "@/utils/common/request"


/**
 * 获取学生状态跟踪列表
 * @param {Object} params 查询参数
 * @param {number} params.page - 页码
 * @param {number} params.size - 每页条数
 * @param {number} params.status - 状态类型：
 *                               0: 申请工作
 *                               1: 确认面试
 *                               2: 入职
 *                               3: 就业材料
 * @param {string} [params.studentAccount] - 学生账号(可选)
 * @param {string} [params.name] - 学生姓名(可选)
 * @param {string} [params.enterpriseAccount] - 企业账号(可选)
 * @param {string} [params.enterpriseName] - 企业名称(可选)
 * @returns {Promise<{
 *   code: number,
 *   message: string,
 *   data: {
 *     total: number,
 *     list: Array<{
 *       id: number,
 *       enterpriseAccount: string,
 *       enterpriseName: string,
 *       jobName: string,
 *       studentAccount: string,
 *       name: string,
 *       create_time: string,
 *       status: number,
 *       auditStatus: number,
 *       // status = 0 申请工作时额外返回
 *       salary?: string,
 *       jobLocation?: string,
 *       jobDesc?: string,
 *       // status = 1 确认面试时额外返回
 *       interviewTime?: string,
 *       interviewLocation?: string,
 *       interviewContact?: string,
 *       interviewPhone?: string,
 *       // status = 2 入职时额外返回
 *       entryTime?: string,
 *       actualSalary?: string,
 *       department?: string,
 *       position?: string,
 *       // status = 3 就业材料时额外返回
 *       materialList?: string[],
 *       uploadTime?: string,
 *       materialStatus?: number,
 *       feedback?: string
 *     }>
 *   }
 * }>} 返回列表数据
 */
export function getStudentStatusListApi(params) {
  return request({
    url: '/info/getStudentStatusList',
    method: 'get',
    params
  })
}

/**
 * 更新申请状态
 * @param {Object} data 更新数据
 * @param {number} data.id - 记录ID
 * @param {number} data.status - 新状态
 * @param {number} data.auditStatus - 审核状态
 * @param {string} [data.interviewTime] - 面试时间(status=1时需要)
 * @param {string} [data.interviewLocation] - 面试地点(status=1时需要)
 * @param {string} [data.interviewContact] - 面试联系人(status=1时需要)
 * @param {string} [data.interviewPhone] - 联系电话(status=1时需要)
 * @param {string} [data.entryTime] - 入职时间(status=2时需要)
 * @param {string} [data.actualSalary] - 实际薪资(status=2时需要)
 * @param {string} [data.department] - 部门(status=2时需要)
 * @param {string} [data.position] - 职位(status=2时需要)
 * @returns {Promise} 返回更新结果
 */
export function updateStatusApi(data) {
  return request({
    url: '/api/student/status/update',
    method: 'put',
    data
  })
}

/**
 * 上传就业材料
 * @param {FormData} data 表单数据
 * @param {number} data.id - 记录ID
 * @param {File[]} data.files - 材料文件
 * @param {string[]} data.materialList - 材料清单描述
 * @returns {Promise} 返回上传结果
 */
export function uploadMaterialsApi(data) {
  return request({
    url: '/api/student/status/materials/upload',
    method: 'post',
    data,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

/**
 * 审核就业材料
 * @param {Object} data 审核数据
 * @param {number} data.id - 记录ID
 * @param {number} data.materialStatus - 材料审核状态(0待审核,1不通过,2通过)
 * @param {string} data.feedback - 审核反馈
 * @returns {Promise} 返回审核结果
 */
export function auditMaterialsApi(data) {
  return request({
    url: '/api/student/status/materials/audit',
    method: 'post',
    data
  })
}

/**
 * 获取学生申请职位状态
 * @param {Object} params 查询参数
 * @param {string} params.studentAccount - 学生账号
 * @returns {Promise} 返回申请状态列表
 */
export function getApplyJobStatusApi(params) {
  return request({
    url: '/api/info/getApplyJobStatus',
    method: 'get',
    params
  })
}

/**
 * 确认面试信息
 * @param {Object} data 面试信息
 * @param {number} data.id - 记录ID
 * @param {number} data.status - 确认状态
 * @returns {Promise} 返回确认结果
 */
export function confirmInterviewApi(data) {
  return request({
    url: '/api/info/confirmInterview',
    method: 'post',
    data
  })
}

/**
 * 填写入职信息
 * @param {Object} data 入职信息
 * @param {number} data.id - 记录ID
 * @param {string} data.entryTime - 入职时间
 * @param {string} data.actualSalary - 实际薪资
 * @param {string} data.department - 部门
 * @param {string} data.position - 职位
 * @returns {Promise} 返回提交结果
 */
export function fillInEntryInfoApi(data) {
  return request({
    url: '/api/info/fillInEntryInfo',
    method: 'post',
    data
  })
} 